package com.kaisu.blog.application.blog;

import com.kaisu.blog.application.blog.dto.*;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

import java.util.Collection;

/**
 * @author kaisu
 */
public interface BlogApplication {
    void create(BlogCreateDTO dto);

    void updateTitle(String id, String title);

    void editContent(String id, String content);

    void deleteByIds(Collection<String> ids);

    void publish(String id);

    BlogDTO findById(String id);

    void like(String id);

    void addComment(String blogId, String content);

    Page<BlogPageDTO> pageByUserId(BlogPageUserRequestDTO requestDTO);

    Page<CommentPageDTO> commentPage(CommentPageRequestDTO requestDTO);

    Page<BlogPageDTO> blogPageBySearch(BlogPageSearchRequestDTO requestDTO);

    Page<BlogPageDTO> blogRecommend(PageRequest request);

    Page<BlogPageDTO> myBlogPage(PageRequest request);

    Page<BlogPageDTO> blogFollowings(PageRequest convert);

    void unlike(String blogId);
}
